Computing systems, such as laptops, netbooks, workstations, are usually connected to various peripheral devices to enhance functionalities which leads to a better experience in using the computing systems. Peripheral devices include but are not limited to Universal Serial Bus (USB) devices, mouse, keyboard, internal and external storage devices, printers, scanners, display units, audio systems, etc.
Generally, the peripheral devices are virtualized by software tool, such as a hypervisor, to enable multiple hosts to share the same system resources. The hypervisor or a virtual machine monitor (VMM) provides a platform for isolated execution of system images and manages access between the system images and the attached peripheral devices. Standards for PCIe based peripheral virtualization, where multiple system images are implemented on a single processor, are specified by Peripheral Component Interconnect Special Interest Group (PCI-SIG) in the single root input-output virtualization (SR-IOV) standard. However, the overhead of such virtualization techniques results in lesser performance and consume higher computer resources in terms of processing power consumed and memory usage.
The capabilities of the SR-IOV standard have been extended by a multi root input-output virtualization (MR-IOV) standard to allow virtualization of the peripheral devices between multiple processors based on the standards of MR-IOV provided by the PCI-SIG. However the MRIOV standard defines only the mechanisms to access the device controller register space by different hosts but not the mechanism to be followed by each device controller to allow device sharing across the hosts. Moreover for a shared peripheral device, transferring the ownership dynamically from a powered off host to an active host is difficult to implement in conventional systems.